package br.ufrn.execicios.servlets;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/tabuada")
public class TabuadaDoNumero extends HttpServlet {

	/**
	 * 
	 */

	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		ImprimePagina(resp, GeraFormularioEntrada());
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		ImprimePagina(resp, GeraTabuadaDoNumero(req.getParameter("numero")));
	}

	private void ImprimePagina(HttpServletResponse resp, String conteudo) {
		PrintWriter out;
		try {
			out = resp.getWriter();
			resp.setContentType("text/html");
			out.println("<html><body>");
			out.println("<h1>Exe01-Gerador de tabuada</h1><br/>");
			out.println(conteudo);
			out.println("</body></html>");
			out.close();

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	private String GeraFormularioEntrada() {
		StringBuilder form = new StringBuilder();
		form.append("<form method='post'>");
		form.append(System.lineSeparator());
		form.append("Digite o número:&nbsp;<input type='text' name='numero' />&nbsp; <input type='submit' value='Gerar'>");
		form.append(System.lineSeparator());
		form.append("</form>");
		return form.toString();
	}

	private String GeraTabuadaDoNumero(String numero) {
		// Valida se é numero inteiro e se ele está vazio
		
		Integer num=null;
		try {
			num = Integer.parseInt(numero);	
		} catch (Exception e) {
			// TODO: handle exception
		}
		
		StringBuilder resultado = new StringBuilder();
		resultado.append(GeraFormularioEntrada());
		resultado.append(System.lineSeparator());
		
		if (numero != null && num != null) {
			
			resultado.append("<h2>Resultado:</h2><br/>");
			resultado.append(System.lineSeparator());
			resultado.append("<table>");
			resultado.append(System.lineSeparator());
			for (int i = 1; i < 10; i++) {
				resultado.append("<tr>");
				resultado.append(System.lineSeparator());
				resultado.append(String.format("<td>%d</td><td>X</td><td>%d</td><td>= %d</td>",
						num,i,num*i));
				resultado.append(System.lineSeparator());
				resultado.append("</tr>");
			}
			resultado.append(System.lineSeparator());
			resultado.append("</table><br/>");
			
		}
		else{
			 resultado.append("<h1>Valor digitado inválido</h1>");
		}
		return resultado.toString();

	}

}
